﻿using System;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;

namespace MopsesPetShop
{
    public class Global : System.Web.HttpApplication
    {
        void Application_Start(object sender, EventArgs e)
        {
            // Код, выполняемый при запуске приложения

        }

        void Application_End(object sender, EventArgs e)
        {
            //  Код, выполняемый при завершении работы приложения

        }

        void Application_Error(object sender, EventArgs e)
        {
            // Код, выполняемый при возникновении необрабатываемой ошибки

        }
        public static string FolderPicrures = "Pictures";
        protected void PicturesToFolder()
        {
            if (!Directory.Exists(Context.Request.PhysicalApplicationPath + FolderPicrures))
                Directory.CreateDirectory(Context.Request.PhysicalApplicationPath + FolderPicrures);
            var dc = new DataClasses1DataContext();

            foreach (var picture in dc.Pictures)
            {
                var bf = new BinaryFormatter();
                var ms = new MemoryStream(picture.picture.ToArray());
                var image = (Bitmap)bf.Deserialize(ms);
                if (dc.Entities.ToList().Exists(entity => entity.ekPreview == picture.pk))
                    image = (Bitmap)image.GetThumbnailImage(400, 300, null, IntPtr.Zero);
                var file = Context.Request.PhysicalApplicationPath + FolderPicrures + "\\" + picture.pk + ".png";
                image.Save(file);
            }
            dc.Connection.Close();
        }

        void Session_Start(object sender, EventArgs e)
        {
            // Код, выполняемый при запуске нового сеанса
            //PicturesToFolder();
        }

        void Session_End(object sender, EventArgs e)
        {
            // Код, выполняемый при запуске приложения. 
            // Примечание: Событие Session_End вызывается только в том случае, если для режима sessionstate
            // задано значение InProc в файле Web.config. Если для режима сеанса задано значение StateServer 
            // или SQLServer, событие не порождается.
            //Directory.Delete(Context.Request.PhysicalApplicationPath + FolderPicrures, true);

        }

    }
}
